/**
 * 测试前端组件与后端API集成的脚本
 * 验证标签和分类的CRUD操作
 */

const API_BASE = 'http://localhost:3001/api';

/**
 * 测试标签API
 */
async function testTagsAPI() {
  console.log('\n=== 测试标签API ===');
  
  try {
    // 1. 获取标签列表
    console.log('1. 获取标签列表...');
    const tagsResponse = await fetch(`${API_BASE}/tags`);
    const tagsData = await tagsResponse.json();
    console.log('标签列表:', tagsData);
    
    // 2. 创建新标签
    console.log('\n2. 创建新标签...');
    const newTag = {
      name: `测试标签${Date.now()}`,
      description: '这是一个测试标签',
      color: '#ff6b6b',
      isActive: true
    };
    
    const createResponse = await fetch(`${API_BASE}/tags`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(newTag)
    });
    
    const createdTag = await createResponse.json();
    console.log('创建的标签:', createdTag);
    
    // 使用创建的标签ID进行后续操作
    const tagId = createdTag.data?.data?.id || createdTag.data?.id;
    
    if (!tagId) {
      console.log('无法获取标签ID，跳过后续测试');
      return;
    }
    
    // 3. 更新标签
    console.log('\n3. 更新标签...');
    const updateData = {
      name: `更新的标签${Date.now()}`,
      description: '这是更新后的标签描述',
      color: '#4ecdc4'
    };
    
    const updateResponse = await fetch(`${API_BASE}/tags/${tagId}`, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(updateData)
    });
    
    const updatedTag = await updateResponse.json();
    console.log('更新的标签:', updatedTag);
    
    // 4. 获取单个标签
    console.log('\n4. 获取单个标签...');
    const getResponse = await fetch(`${API_BASE}/tags/${tagId}`);
    const getTag = await getResponse.json();
    console.log('获取的标签:', getTag);
    
    // 5. 删除标签
    console.log('\n5. 删除标签...');
    const deleteResponse = await fetch(`${API_BASE}/tags/${tagId}`, {
      method: 'DELETE'
    });
    
    const deleteResult = await deleteResponse.json();
    console.log('删除结果:', deleteResult);
    
  } catch (error) {
    console.error('标签API测试失败:', error);
  }
}

/**
 * 测试分类API
 */
async function testClassifiesAPI() {
  console.log('\n=== 测试分类API ===');
  
  try {
    // 1. 获取分类列表
    console.log('1. 获取分类列表...');
    const classifiesResponse = await fetch(`${API_BASE}/classifies`);
    const classifiesData = await classifiesResponse.json();
    console.log('分类列表:', classifiesData);
    
    // 2. 创建新分类
    console.log('\n2. 创建新分类...');
    const newClassify = {
      name: `测试分类${Date.now()}`,
      value: `test_classify_${Date.now()}`,
      description: '这是一个测试分类',
      icon: 'folder',
      color: '#00ccff',
      isActive: true
    };
    
    const createResponse = await fetch(`${API_BASE}/classifies`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(newClassify)
    });
    
    const createdClassify = await createResponse.json();
    console.log('创建的分类:', createdClassify);
    
    // 使用创建的分类ID进行后续操作
    const classifyId = createdClassify.data?.data?.id || createdClassify.data?.id;
    
    if (!classifyId) {
      console.log('无法获取分类ID，跳过后续测试');
      return;
    }
    
    // 3. 更新分类
    console.log('\n3. 更新分类...');
    const updateData = {
      name: `更新的分类${Date.now()}`,
      description: '这是更新后的分类描述',
      color: '#ff9800'
    };
    
    const updateResponse = await fetch(`${API_BASE}/classifies/${classifyId}`, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(updateData)
    });
    
    const updatedClassify = await updateResponse.json();
    console.log('更新的分类:', updatedClassify);
    
    // 4. 获取单个分类
    console.log('\n4. 获取单个分类...');
    const getResponse = await fetch(`${API_BASE}/classifies/${classifyId}`);
    const getClassify = await getResponse.json();
    console.log('获取的分类:', getClassify);
    
    // 5. 删除分类
    console.log('\n5. 删除分类...');
    const deleteResponse = await fetch(`${API_BASE}/classifies/${classifyId}`, {
      method: 'DELETE'
    });
    
    const deleteResult = await deleteResponse.json();
    console.log('删除结果:', deleteResult);
    
  } catch (error) {
    console.error('分类API测试失败:', error);
  }
}

/**
 * 运行所有测试
 */
async function runTests() {
  console.log('开始API集成测试...');
  
  await testTagsAPI();
  await testClassifiesAPI();
  
  console.log('\n=== 测试完成 ===');
}

// 运行测试
runTests().catch(console.error);